package com.cskaoyan.javase.oop1._12static._6test;

import com.sun.xml.internal.ws.api.message.MessageWritable;
import com.sun.xml.internal.ws.api.pipe.ServerTubeAssemblerContext;

/**
 * 总结一下
 * 三种变量的类型
 * @since 14:25
 * @author wuguidong@cskaoyan.onaliyun.com
 */
public class Demo {
    public static void main(String[] args) {
        /*
            方法或者作用域内部 是一个局部变量
            栈上引用指向堆上对象
         */
        Pet p = new Pet();
        System.out.println(p);

        Student s = new Student();
        System.out.println(s.p);

        System.out.println(Student.p2);
    }
}

class Student {
    /*
        成员变量
        堆上Student对象中的引用，指向堆上的Pet对象
        引用存在Student对象中
     */
    Pet p = new Pet();
    /*
        静态成员变量
        堆上的一个被共享的Pet p2引用指向堆上的Pet对象
        这个引用被全体Student对共享，属于Student类
     */
    static Pet p2 = new Pet();


    public void test(){
        System.out.println(p);
        System.out.println(p2);
    }

    public static void testStatic(){
        System.out.println(p2);
        // System.out.println(p);
        // 局部变量的p
        Pet p = new Pet();
        System.out.println(p);
    }

}

class Pet {

}